package org.lestr.secuel.m3ds.maths;

import java.util.Collection;

public interface IPoint3d<E extends IPoint3d.IEcouteur<P>, P extends IPoint3d> {


    void définirXYZ(IPoint3d point3d);


    void définirXYZ(double x,
                    double y,
                    double z);


    void définirX(double x);


    double obtenirX();


    void définirY(double y);


    double obtenirY();


    void définirZ(double z);


    double obtenirZ();


    Collection<E> obtenirEcouteurs();


    public static interface IEcouteur<P extends IPoint3d> {


        void xModifié(P point3d,
                      double ancienX);


        void yModifié(P point3d,
                      double ancienY);


        void zModifié(P point3d,
                      double ancienZ);


        public static class IAdaptateur<P extends IPoint3d> implements IEcouteur {


            @Override
            public void xModifié(IPoint3d point3d,
                                 double ancienX) {
            }// FIN Méthode xModifié


            @Override
            public void yModifié(IPoint3d point3d,
                                 double ancienY) {
            }// FIN Méthode yModifié


            @Override
            public void zModifié(IPoint3d point3d,
                                 double ancienZ) {
            }// FIN Méthode zModifié


        }// FIN Classe IAdaptateur


    }// FIN Interface IEcouteur


}// FIN Interface IPoint3d
